home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0"?>
- <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
- <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
- <!-- $Revision: 1.7.2.6 $ -->
-
- <!--
- Copyright 2002-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <modulesynopsis metafile="mod_setenvif.xml.meta">
-
- <name>mod_setenvif</name>
- <description>Allows the setting of environment variables based
- on characteristics of the request</description>
- <status>Base</status>
- <sourcefile>mod_setenvif.c</sourcefile>
- <identifier>setenvif_module</identifier>
-
-
- <summary>
-
- <p>The <module>mod_setenvif</module> module allows you to set
- environment variables according to whether different aspects of
- the request match regular expressions you specify. These
- environment variables can be used by other parts of the server
- to make decisions about actions to be taken.</p>
-
- <p>The directives are considered in the order they appear in
- the configuration files. So more complex sequences can be used,
- such as this example, which sets <code>netscape</code> if the
- browser is mozilla but not MSIE.</p>
-
- <example>
- BrowserMatch ^Mozilla netscape<br />
- BrowserMatch MSIE !netscape<br />
- </example>
- </summary>
-
- <seealso><a href="../env.html">Environment Variables in Apache</a></seealso>
-
- <directivesynopsis>
- <name>BrowserMatch</name>
- <description>Sets environment variables conditional on HTTP User-Agent
- </description>
- <syntax>BrowserMatch <em>regex [!]env-variable</em>[=<em>value</em>]
- [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax>
- <contextlist><context>server config</context>
- <context>virtual host</context><context>directory</context>
- <context>.htaccess</context></contextlist>
- <override>FileInfo</override>
-
- <usage>
- <p>The <directive>BrowserMatch</directive> is a special cases of the
- <directive module="mod_setenvif">SetEnvIf</directive> directive that
- sets environment variables conditional on the
- <code>User-Agent</code> HTTP request header. The following two
- lines have the same effect:</p>
- <example>
- BrowserMatchNoCase Robot is_a_robot<br />
- SetEnvIfNoCase User-Agent Robot is_a_robot<br />
- </example>
-
- <p>Some additional examples:</p>
- <example>
- BrowserMatch ^Mozilla forms jpeg=yes browser=netscape<br />
- BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript<br />
- BrowserMatch MSIE !javascript<br />
- </example>
- </usage>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>BrowserMatchNoCase</name>
- <description>Sets environment variables conditional on User-Agent without
- respect to case</description>
- <syntax>BrowserMatchNoCase <em>regex [!]env-variable</em>[=<em>value</em>]
- [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax>
- <contextlist><context>server config</context>
- <context>virtual host</context><context>directory</context>
- <context>.htaccess</context></contextlist>
- <override>FileInfo</override>
- <compatibility>Apache 1.2 and
- above (in Apache 1.2 this directive was found in the
- now-obsolete mod_browser module)</compatibility>
-
- <usage>
-
- <p>The <directive>BrowserMatchNoCase</directive> directive is
- semantically identical to the <directive
- module="mod_setenvif">BrowserMatch</directive> directive.
- However, it provides for case-insensitive matching. For
- example:</p>
- <example>
- BrowserMatchNoCase mac platform=macintosh<br />
- BrowserMatchNoCase win platform=windows<br />
- </example>
-
- <p>The <directive>BrowserMatch</directive> and
- <directive>BrowserMatchNoCase</directive> directives are special cases of
- the <directive module="mod_setenvif">SetEnvIf</directive> and <directive
- module="mod_setenvif">SetEnvIfNoCase</directive>
- directives. The following two lines have the same effect:</p>
- <example>
- BrowserMatchNoCase Robot is_a_robot<br />
- SetEnvIfNoCase User-Agent Robot is_a_robot<br />
- </example>
- </usage>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>SetEnvIf</name>
- <description>Sets environment variables based on attributes of the request
- </description>
- <syntax>SetEnvIf <em>attribute
- regex [!]env-variable</em>[=<em>value</em>]
- [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax>
- <contextlist><context>server config</context>
- <context>virtual host</context><context>directory</context>
- <context>.htaccess</context></contextlist>
- <override>FileInfo</override>
-
- <usage>
- <p>The <directive>SetEnvIf</directive> directive defines
- environment variables based on attributes of the request. The
- <em>attribute</em> specified in the first argument can be one of three
- things:</p>
-
- <ol>
- <li>An HTTP request header field (see <a
- href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a>
- for more information about these); for example: <code>Host</code>,
- <code>User-Agent</code>, <code>Referer</code>, and
- <code>Accept-Language</code>. A regular expression may be
- used to specify a set of request headers.</li>
-
- <li>One of the following aspects of the request:
- <ul>
- <li><code>Remote_Host</code> - the hostname (if available) of
- the client making the request</li>
-
- <li><code>Remote_Addr</code> - the IP address of the client
- making the request</li>
-
- <li><code>Server_Addr</code> - the IP address of the server
- on which the request was received (only with versions later
- than 2.0.43)</li>
-
- <li><code>Request_Method</code> - the name of the method
- being used (<code>GET</code>, <code>POST</code>, <em>et
- cetera</em>)</li>
-
- <li><code>Request_Protocol</code> - the name and version of
- the protocol with which the request was made (<em>e.g.</em>,
- "HTTP/0.9", "HTTP/1.1", <em>etc.</em>)</li>
-
- <li><code>Request_URI</code> - the resource requested on the HTTP
- request line -- generally the portion of the URL
- following the scheme and host portion without the query string</li>
- </ul>
- </li>
-
- <li>The name of an environment variable in the list of those
- associated with the request. This allows
- <directive>SetEnvIf</directive> directives to test against the result
- of prior matches. Only those environment variables defined by earlier
- <code>SetEnvIf[NoCase]</code> directives are available for testing in
- this manner. 'Earlier' means that they were defined at a broader scope
- (such as server-wide) or previously in the current directive's scope.
- Environment variables will be considered only if there was no match
- among request characteristics and a regular expression was not
- used for the <em>attribute</em>.</li>
- </ol>
-
- <p>The second argument (<em>regex</em>) is a <a
- href="http://www.pcre.org/">Perl compatible regular expression</a>.
- This is similar to a POSIX.2 egrep-style regular expression.
- If the <em>regex</em> matches against the <em>attribute</em>,
- then the remainder of the arguments are evaluated.</p>
-
- <p>The rest of the arguments give the names of variables to set, and
- optionally values to which they should be set. These take the form
- of</p>
-
- <ol>
- <li><code><em>varname</em></code>, or</li>
-
- <li><code>!<em>varname</em></code>, or</li>
-
- <li><code><em>varname</em>=<em>value</em></code></li>
- </ol>
-
- <p>In the first form, the value will be set to "1". The second
- will remove the given variable if already defined, and the
- third will set the variable to the literal value given by
- <code><em>value</em></code>. Since version 2.0.51 Apache will
- recognize occurrences of <code>$1</code>..<code>$9</code> within
- <var>value</var> and replace them by parenthesized subexpressions
- of <var>regex</var>.</p>
-
- <example>
- <title>Example:</title>
- SetEnvIf Request_URI "\.gif$" object_is_image=gif<br />
- SetEnvIf Request_URI "\.jpg$" object_is_image=jpg<br />
- SetEnvIf Request_URI "\.xbm$" object_is_image=xbm<br />
- :<br />
- SetEnvIf Referer www\.mydomain\.com intra_site_referral<br />
- :<br />
- SetEnvIf object_is_image xbm XBIT_PROCESSING=1<br />
- :<br />
- SetEnvIf ^TS* ^[a-z].* HAVE_TS<br />
- </example>
-
- <p>The first three will set the environment variable
- <code>object_is_image</code> if the request was for an image
- file, and the fourth sets <code>intra_site_referral</code> if
- the referring page was somewhere on the
- <code>www.mydomain.com</code> Web site.</p>
-
- <p>The last example will set environment variable
- <code>HAVE_TS</code> if the request contains any headers that
- begin with "TS" whose values begins with any character in the
- set [a-z].</p>
- </usage>
-
- <seealso><a href="../env.html">Environment Variables in Apache</a>,
- for additional examples.
- </seealso>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>SetEnvIfNoCase</name>
- <description>Sets environment variables based on attributes of the request
- without respect to case</description>
- <syntax>SetEnvIfNoCase <em>attribute regex
- [!]env-variable</em>[=<em>value</em>]
- [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax>
- <contextlist><context>server config</context>
- <context>virtual host</context><context>directory</context>
- <context>.htaccess</context></contextlist>
- <override>FileInfo</override>
- <compatibility>Apache 1.3 and above</compatibility>
-
- <usage>
-
- <p>The <directive>SetEnvIfNoCase</directive> is semantically identical to
- the <directive module="mod_setenvif">SetEnvIf</directive> directive,
- and differs only in that the regular expression matching is
- performed in a case-insensitive manner. For example:</p>
- <example>
- SetEnvIfNoCase Host Apache\.Org site=apache
- </example>
-
- <p>This will cause the <code>site</code> environment variable
- to be set to "<code>apache</code>" if the HTTP request header
- field <code>Host:</code> was included and contained
- <code>Apache.Org</code>, <code>apache.org</code>, or any other
- combination.</p>
- </usage>
- </directivesynopsis>
- </modulesynopsis>
-